inspector: Stop using ::hierarchy-changed
authorMatthias Clasen <mclasen@redhat.com>
Sat, 23 Feb 2019 05:29:52 +0000 (00:29 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 23 Feb 2019 14:43:57 +0000 (09:43 -0500)
Use the new root and unroot vfuncs instead.

gtk/inspector/object-tree.c
gtk/inspector/object-tree.ui
gtk/inspector/prop-list.c
gtk/inspector/prop-list.ui
gtk/inspector/resource-list.c
gtk/inspector/resource-list.ui
gtk/inspector/statistics.c

index 618cf0866fd16ecc0e96cf2e4c968610fada0e40..9dae1d51834cdb6206f9f63bdfb096aa1b801ab1 100644 (file)
@@ -814,28 +814,33 @@ destroy_controller (GtkEventController *controller)
 }
 
 static void
-on_hierarchy_changed (GtkWidget *widget,
-                      GtkWidget *previous_toplevel)
+root (GtkWidget *widget)
 {
   GtkInspectorObjectTree *wt = GTK_INSPECTOR_OBJECT_TREE (widget);
   GtkEventController *controller;
   GtkWidget *toplevel;
 
-  if (previous_toplevel)
-    g_object_set_data (G_OBJECT (previous_toplevel), "object-controller", NULL);
+  GTK_WIDGET_CLASS (gtk_inspector_object_tree_parent_class)->root (widget);
 
   toplevel = gtk_widget_get_toplevel (widget);
 
-  if (!GTK_IS_WINDOW (toplevel))
-    return;
-
   controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (toplevel), "object-controller", controller, (GDestroyNotify)destroy_controller);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
   gtk_widget_add_controller (toplevel, controller);
 
-  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (wt->priv->search_bar),
-                                         toplevel);
+  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (wt->priv->search_bar), toplevel);
+}
+
+static void
+unroot (GtkWidget *widget)
+{
+  GtkWidget *toplevel;
+
+  toplevel = gtk_widget_get_toplevel (widget);
+  g_object_set_data (G_OBJECT (toplevel), "object-controller", NULL);
+
+  GTK_WIDGET_CLASS (gtk_inspector_object_tree_parent_class)->unroot (widget);
 }
 
 static gboolean
@@ -1191,6 +1196,9 @@ gtk_inspector_object_tree_class_init (GtkInspectorObjectTreeClass *klass)
 
   object_class->dispose = gtk_inspector_object_tree_dispose;
 
+  widget_class->root = root;
+  widget_class->unroot = unroot;
+
   signals[OBJECT_ACTIVATED] =
       g_signal_new ("object-activated",
                     G_OBJECT_CLASS_TYPE (klass),
@@ -1216,7 +1224,6 @@ gtk_inspector_object_tree_class_init (GtkInspectorObjectTreeClass *klass)
   gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorObjectTree, type_size_group);
   gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorObjectTree, name_size_group);
   gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorObjectTree, label_size_group);
-  gtk_widget_class_bind_template_callback (widget_class, on_hierarchy_changed);
   gtk_widget_class_bind_template_callback (widget_class, on_search_changed);
   gtk_widget_class_bind_template_callback (widget_class, on_row_activated);
   gtk_widget_class_bind_template_callback (widget_class, next_match);
index ed3ba30397976b1dc8cd431cfb040ac60f23d1da..530e2b52d236d96e79dff5303fd6c8d3aac5782c 100644 (file)
@@ -1,7 +1,6 @@
 <interface domain="gtk40">
   <template class="GtkInspectorObjectTree" parent="GtkBox">
     <property name="orientation">vertical</property>
-    <signal name="hierarchy-changed" handler="on_hierarchy_changed"/>
     <child>
       <object class="GtkSearchBar" id="search_bar">
         <property name="show-close-button">1</property>
index d12a97bd7e0abdbc3547bd45d97e2e05c3f49630..da0cb7cd22aa7cd34539219407aadac5ceb1b518 100644 (file)
@@ -110,26 +110,31 @@ destroy_controller (GtkEventController *controller)
 }
 
 static void
-hierarchy_changed (GtkWidget *widget,
-                   GtkWidget *previous_toplevel)
+root (GtkWidget *widget)
 {
   GtkEventController *controller;
   GtkWidget *toplevel;
 
-  if (previous_toplevel)
-    g_object_set_data (G_OBJECT (previous_toplevel), "prop-controller", NULL);
+  GTK_WIDGET_CLASS (gtk_inspector_prop_list_parent_class)->root (widget);
 
   toplevel = gtk_widget_get_toplevel (widget);
-
-  if (!GTK_IS_WINDOW (toplevel))
-    return;
-
   controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (toplevel), "prop-controller", controller, (GDestroyNotify)destroy_controller);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
   gtk_widget_add_controller (toplevel, controller);
 }
 
+static void
+unroot (GtkWidget *widget)
+{
+  GtkWidget *toplevel;
+
+  toplevel = gtk_widget_get_toplevel (widget);
+  g_object_set_data (G_OBJECT (toplevel), "prop-controller", NULL);
+
+  GTK_WIDGET_CLASS (gtk_inspector_prop_list_parent_class)->unroot (widget);
+}
+
 static void
 gtk_inspector_prop_list_init (GtkInspectorPropList *pl)
 {
@@ -292,6 +297,9 @@ gtk_inspector_prop_list_class_init (GtkInspectorPropListClass *klass)
   object_class->set_property = set_property;
   object_class->constructed = constructed;
 
+  widget_class->root = root;
+  widget_class->unroot = unroot;
+
   g_object_class_install_property (object_class, PROP_OBJECT_TREE,
       g_param_spec_object ("object-tree", "Object Tree", "Object tree",
                            GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
@@ -309,7 +317,6 @@ gtk_inspector_prop_list_class_init (GtkInspectorPropListClass *klass)
   gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorPropList, tree);
   gtk_widget_class_bind_template_callback (widget_class, row_activated);
   gtk_widget_class_bind_template_callback (widget_class, search_close_clicked);
-  gtk_widget_class_bind_template_callback (widget_class, hierarchy_changed);
 }
 
 /* Like g_strdup_value_contents, but keeps the type name separate */
index 00359d7d30f8656f7e08f03fd667c7b66e5fb749..e59b239ebb2c93edef0607c59d94145267b62d98 100644 (file)
@@ -12,7 +12,6 @@
   </object>
   <template class="GtkInspectorPropList" parent="GtkBox">
     <property name="orientation">vertical</property>
-    <signal name="hierarchy-changed" handler="hierarchy_changed"/>
     <child>
       <object class="GtkScrolledWindow">
         <property name="expand">1</property>
index 3dd38a8d5238c3e1c96a2456b9e24f9e87333286..7b9d297ad2320621e80c450f3fd5841556f0492f 100644 (file)
@@ -476,28 +476,33 @@ destroy_controller (GtkEventController *controller)
 }
 
 static void
-on_hierarchy_changed (GtkWidget *widget,
-                      GtkWidget *previous_toplevel)
+root (GtkWidget *widget)
 {
   GtkInspectorResourceList *sl = GTK_INSPECTOR_RESOURCE_LIST (widget);
   GtkEventController *controller;
   GtkWidget *toplevel;
 
-  if (previous_toplevel)
-    g_object_set_data (G_OBJECT (previous_toplevel), "resource-controller", NULL);
+  GTK_WIDGET_CLASS (gtk_inspector_resource_list_parent_class)->root (widget);
 
   toplevel = gtk_widget_get_toplevel (widget);
 
-  if (!GTK_IS_WINDOW (toplevel))
-    return;
-
   controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (toplevel), "resource-controller", controller, (GDestroyNotify)destroy_controller);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
   gtk_widget_add_controller (toplevel, controller);
 
-  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (sl->priv->search_bar),
-                                         toplevel);
+  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (sl->priv->search_bar), toplevel);
+}
+
+static void
+unroot (GtkWidget *widget)
+{
+  GtkWidget *toplevel;
+
+  toplevel = gtk_widget_get_toplevel (widget);
+  g_object_set_data (G_OBJECT (toplevel), "resource-controller", NULL);
+
+  GTK_WIDGET_CLASS (gtk_inspector_resource_list_parent_class)->unroot (widget);
 }
 
 static void
@@ -705,6 +710,9 @@ gtk_inspector_resource_list_class_init (GtkInspectorResourceListClass *klass)
   object_class->constructed = constructed;
   object_class->finalize = finalize;
 
+  widget_class->root = root;
+  widget_class->unroot = unroot;
+
   g_object_class_install_property (object_class, PROP_BUTTONS,
       g_param_spec_object ("buttons", NULL, NULL,
                            GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
@@ -731,7 +739,6 @@ gtk_inspector_resource_list_class_init (GtkInspectorResourceListClass *klass)
 
   gtk_widget_class_bind_template_callback (widget_class, row_activated);
   gtk_widget_class_bind_template_callback (widget_class, on_selection_changed);
-  gtk_widget_class_bind_template_callback (widget_class, on_hierarchy_changed);
   gtk_widget_class_bind_template_callback (widget_class, on_search_changed);
   gtk_widget_class_bind_template_callback (widget_class, next_match);
   gtk_widget_class_bind_template_callback (widget_class, previous_match);
index e380a7641e82564ce31520d8497d909bd6d7b6b8..fa8c84c08b5dc0897d24d0f1551a7ba566122f48 100644 (file)
@@ -9,7 +9,6 @@
   </object>
   <object class="GtkTextBuffer" id="buffer"/>
   <template class="GtkInspectorResourceList" parent="GtkBox">
-    <signal name="hierarchy-changed" handler="on_hierarchy_changed"/>
     <child>
       <object class="GtkStack" id="stack">
         <child>
index e975c45db654c5bc9b7cac7887eac234fe39d15e..864694687c2aa134453aa4702b244b9013ec6216 100644 (file)
@@ -327,28 +327,33 @@ destroy_controller (GtkEventController *controller)
 }
 
 static void
-hierarchy_changed (GtkWidget *widget,
-                   GtkWidget *previous_toplevel)
+root (GtkWidget *widget)
 {
   GtkInspectorStatistics *sl = GTK_INSPECTOR_STATISTICS (widget);
   GtkEventController *controller;
   GtkWidget *toplevel;
 
-  if (previous_toplevel)
-    g_object_set_data (G_OBJECT (previous_toplevel), "statistics-controller", NULL);
+  GTK_WIDGET_CLASS (gtk_inspector_statistics_parent_class)->root (widget);
 
   toplevel = gtk_widget_get_toplevel (widget);
 
-  if (!GTK_IS_WINDOW (toplevel))
-    return;
-
   controller = gtk_event_controller_key_new ();
   g_object_set_data_full (G_OBJECT (toplevel), "statistics-controller", controller, (GDestroyNotify)destroy_controller);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), widget);
   gtk_widget_add_controller (toplevel, controller);
 
-  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (sl->priv->search_bar),
-                                         toplevel);
+  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (sl->priv->search_bar), toplevel);
+}
+
+static void
+unroot (GtkWidget *widget)
+{
+  GtkWidget *toplevel;
+
+  toplevel = gtk_widget_get_toplevel (widget);
+  g_object_set_data (G_OBJECT (toplevel), "statistics-controller", NULL);
+
+  GTK_WIDGET_CLASS (gtk_inspector_statistics_parent_class)->unroot (widget);
 }
 
 static void
@@ -376,7 +381,6 @@ gtk_inspector_statistics_init (GtkInspectorStatistics *sl)
 
   gtk_tree_view_set_search_entry (sl->priv->view, GTK_EDITABLE (sl->priv->search_entry));
   gtk_tree_view_set_search_equal_func (sl->priv->view, match_row, sl, NULL);
-  g_signal_connect (sl, "hierarchy-changed", G_CALLBACK (hierarchy_changed), NULL);
 }
 
 static void
@@ -462,6 +466,9 @@ gtk_inspector_statistics_class_init (GtkInspectorStatisticsClass *klass)
   object_class->constructed = constructed;
   object_class->finalize = finalize;
 
+  widget_class->root = root;
+  widget_class->unroot = unroot;
+
   g_object_class_install_property (object_class, PROP_BUTTON,
       g_param_spec_object ("button", NULL, NULL,
                            GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));